package com.atguigu.product.app;

import java.util.Arrays;
import java.util.Map;

import com.atguigu.common.group.AddGroup;
import com.atguigu.common.group.UpdateGroup;
import com.atguigu.product.entity.BrandEntity;
import com.atguigu.product.service.BrandService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.atguigu.common.utils.PageUtils;
import com.atguigu.common.utils.R;

import javax.annotation.Resource;


/**
 * 品牌
 *
 * @author polarisink
 * @email polarisink@163.com
 * @date 2020-12-18 14:19:34
 */
@RestController
@RequestMapping("product/brand")
public class BrandController {

  @Resource
  private BrandService brandService;

  /**
   * 列表
   */
  @RequestMapping("/list")
  public R list(@RequestParam Map<String, Object> params) {
    PageUtils page = brandService.queryPage(params);

    return R.ok().put("page", page);
  }


  /**
   * 信息
   */
  @RequestMapping("/info/{brandId}")
  public R info(@PathVariable("brandId") Long brandId) {
    BrandEntity brand = brandService.getById(brandId);

    return R.ok().put("brand", brand);
  }

  /**
   * 保存
   */
  @RequestMapping("/save")
  public R save(@Validated(AddGroup.class) @RequestBody BrandEntity brand/*, BindingResult result*/) {
/*        Map<String, String> map = new HashMap<>();
        if(result.hasErrors()){
            //1、获取校验的错误结果
            result.getFieldErrors().forEach((item) -> {
                //获取错误提示
                String message = item.getDefaultMessage();
                //获取错误属性名字
                String field = item.getField();
                map.put(field, message);
            });
            return R.error(400,"提交的数据不合法").put("data", map);
        }
        }else {*/
    brandService.save(brand);
    return R.ok();
  }

  /**
   * 修改
   */
  @RequestMapping("/update")
  public R update(@Validated(UpdateGroup.class) @RequestBody BrandEntity brand) {
    brandService.updateDetail(brand);

    return R.ok();
  }

  @RequestMapping("/update/status")
  //@RequiresPermissions("product:brand:update")
  public R updateStatus(/*@Validated(UpdateStatusGroup.class)*/ @RequestBody BrandEntity brand) {
    brandService.updateById(brand);

    return R.ok();
  }

  /**
   * 删除
   */
  @RequestMapping("/delete")
  public R delete(@RequestBody Long[] brandIds) {
    brandService.removeByIds(Arrays.asList(brandIds));

    return R.ok();
  }

}
